1. Field of the Invention
The present invention relates to component-based programming architectures. More specifically, the present invention relates to a method and an apparatus for providing a unified component architecture for both client-side and server-side programming components.
2. Related Art
As networked computing devices, such as personal digital assistants (PDAs) and cell phones, grow increasingly more popular, developers are beginning to deploy a large number of services to operate with these portable computing devices. Unfortunately, developing such services involves writing complicated client-side and server-side software. Dealing with the complexity of this software requires a large amount of programmer time, which results in considerable cost and delay.
Component-based architectures, such as the Enterprise Java Bean (EJB) architecture developed by SUN Microsystems, Inc. of Santa Clara Calif., have been developed to manage the complexity involved in developing server-based middleware applications. A component-based architecture allows an application to be decomposed into dynamic “components” that interact with each other through well-defined interfaces. This allows programmers to work independently from each other, and also makes applications easier to maintain and test. Moreover, components are persistent, which means they can be reused again in different applications without having to be recompiled.
For example, referring the FIG. 1A, a middle-tier server 121 supports an EJB container 108, which enables various EJB instances 109-111 to execute. For example, EJB container 108 can provide services to manage security and system resources for EJB instances 109-111.
Similarly, components can also be deployed within Enterprise Information System (EIS) tier server 122 to provide services to components in middle-tier server 121. For example, referring to FIG. 1A, EJB instance 111 from middle-tier server 121 makes use of services provided by EJB instance 116 within EJB container 114 on EIS-tier server 122. EJB instance 116 itself makes use of services provided by other EJB instances 115 and 117 within the same EJB container 114.
An application (or applet) 126 running on a client 120 can be configured to access services provided by the components on servers 121 and 122. For example, application 126 within client 120 can contain code that marshals method invocations before they are sent to middle-tier server 121. At the same time, web services application 124 can contain corresponding code that unmarshals the method invocations before they are sent to the components on middle-tier server 121.
Note that application 126, web services application 124 and components within EJB container 108 are typically developed by different programmers using different programming paradigms. Hence, it is typically a challenging task to get these programmers to effectively collaborate to enable application 126 to communicate with components in middle-tier server 121.
Furthermore, it is a difficult task to deploy a service across multiple clients and servers. Capabilities can vary greatly between different client devices. Moreover, characteristics of network connections between clients and server can vary. Both of these factors can influence the decision about what type of functionality should be deployed to a given client.
Hence, what is needed is a method and an apparatus, which allows client applications to make use of services provided by components without the above-described problems.